package DAO;

import Base.ConvertByte;
import Base.Dados;
import Base.Pergunta;
import java.io.IOException;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author Rosana
 */
public class DaoPergunta {

    public int inserirPergunta(Pergunta perg)
    {        
        Connection con = FactoryConnection.getConnection();
        ResultSet rs;
        int cod = -1;
        
        if(perg.getId() ==-1)
        {
            String query = "INSERT INTO pergunta(tema, pergunta, imagem, comentario, link)"
                    + " VALUES(?,?,?,?,?) returning id";

            try
            {
                CallableStatement stmt = con.prepareCall(query);
                stmt.setInt(1, perg.getIdTema());
                stmt.setString(2, perg.getPergunta());
                stmt.setBytes(3, perg.getImagem());
                stmt.setString(4, perg.getComentario());
                stmt.setString(5, perg.getLink());

                rs = stmt.executeQuery();
                
                if(rs.next())
                {
                    cod = rs.getInt("id");
                }
                stmt.close();                  
            }
            catch (SQLException e)
            {
                System.out.println("Erro no SQL do inserir pergunta");
                e.printStackTrace();
                return cod;
            }
        }
        return cod;        
    }
    
    public boolean excluir(Pergunta perg)
    {
        Connection con = FactoryConnection.getConnection();
        ResultSet rs;
        String query = "DELETE FROM pergunta WHERE id =?";

        try
        {
            CallableStatement stmt = con.prepareCall(query);
            stmt.setInt(1, perg.getId());                
            stmt.execute();                
            stmt.close();  

        }
        catch (SQLException e)
        {
            System.out.println("Erro no SQL do excluir pergunta");
            e.printStackTrace();
            return false;
        }

        return true;
    }

    public int update(Dados dados, String questao, String coment, String link, String caminho) {
        Connection con = FactoryConnection.getConnection();
        ResultSet rs;
        String query = "UPDATE pergunta set pergunta=?, imagem=?,comentario=?, link=? WHERE id =?";

        byte [] imagem;
        if("".equals(caminho))
        {
           imagem = null;
        }
        else
        {
            try
            {
                imagem = ConvertByte.imageToByte(caminho);
            }
            catch(Exception e){
                return 4;
            }
        }
        
        
        try
        {
            CallableStatement stmt = con.prepareCall(query);
            stmt.setString(1, questao);
            stmt.setBytes(2, imagem);
            stmt.setString(3, coment);
            stmt.setString(4, link);
            stmt.setInt(5, dados.getPergunta().getId());
            stmt.executeUpdate();                
            stmt.close();  

        }
        catch (SQLException e)
        {
            System.out.println("Erro no SQL do excluir pergunta");
            e.printStackTrace();
            return 5;
        }

        return 1;
    }
    
}
